package com.example.mysql.学习笔记.高级.事务.多版本并发控制;

public class 快照读和当前读_2 {
}
/**
 *2.快照读与当前读  读(快照读)-写(当前读) 冲突
 * MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能，
 * 用更好的方式去处理  读-写  冲突,做到即使有读写冲突时，
 * 也能做到不加锁，非阻塞并发读，而这个读指的就是快照读,而非当前读。
 * 当前读实际上是--种加锁的操作，是悲观锁的实现。
 * 而MVCC本质是采用乐观锁思想的一种方式。
 *
 * 2.1快照读  读的可能不是最新的数据     不加锁的查询
 * 快照读又叫一致性读，读取的是快照数据。
 * 不加锁的简单的SELECT都属于 快照读，即不加锁的非阻塞读;
 * 之所以出现快照读的情况，是基于提高并发性能的考虑，快照读的实现是基于MVCC，
 * 它在很多情况下，避免了加锁操作，降低了开销。
 * 既然是基于多版本，那么快照读可能读到的并不定是数据的最新版本，而有可能是之前的历史版本。
 * 快照读的前提是隔离级别不是串行级别，串行级别下的快照读会退化成当前读。
 *
 * 2.2当前读   一定是当前最新的数据     加锁的
 * 当前读读取的是记录的最新版本(最新数据，而不是历史版本的数据)，
 * 读取时还要保证其他并发事务不能修改当前记录，会对读取的记录进行加锁。
 * 加锁的SELECT,或者对数据进行增删改都会进行当前读。
 *
 */
